package com.zq.learn.spark.hbase;

import org.apache.hadoop.conf.Configuration;

import javax.swing.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * HbaseApp
 *
 * @author ZhangQi
 * @date 2020/2/6
 */

public class HbaseApp {
//  Connection con = null;
//  Table table = null;
//  Admin admin = null;
//
//  String tableName = "pk_hbase_java_api";
//
//  @Before public void setUp() {
//    Configuration conf = new Configuration();
//    //在hbase-site.xml配置中
//    conf.set("hbase.rootdir", "hdfs://localhost:8020/hbase");
//    conf.set("hbase.zookeeper.quorum", "localhost:2182");
//    try {
//      con = ConnectionFactory.createConnection(conf);
//      admin = con.getAdmin();
//      Assert.assertNotNull(con);
//      Assert.assertNotNull(admin);
//    } catch (IOException e) {
//      e.printStackTrace();
//    }
//  }
//
//  @After public void turnDown() throws IOException {
//    try {
//      con.close();
//    } catch (IOException e) {
//      e.printStackTrace();
//    }
//  }
//
//  @Test public void createTable() throws IOException {
//    TableName name = TableName.valueOf(tableName);
//    if (admin.tableExists(name)) {
//      System.out.println("表已存在");
//    } else {
//      HTableDescriptor descriptor = new HTableDescriptor(name);
//      descriptor.addFamily(new HColumnDescriptor("info"));
//      descriptor.addFamily(new HColumnDescriptor("address"));
//      admin.createTable(descriptor);
//      System.out.println("创建成功");
//    }
//  }
//
//  @Test public void queryInfos() throws IOException {
//    HTableDescriptor[] tableNames = admin.listTables();
//    if (tableNames.length > 0) {
//      for (HTableDescriptor tab : tableNames) {
//        System.out.println(tab.getNameAsString());
//
//        HColumnDescriptor[] columnFamilies = tab.getColumnFamilies();
//        for (HColumnDescriptor cf : columnFamilies) {
//          System.out.println(cf.getNameAsString());
//        }
//      }
//    }
//  }
//
//  @Test public void putDatas() throws IOException {
//    table = con.getTable(TableName.valueOf(tableName));
//    //单条记录
//    //    Put put=new Put(Bytes.toBytes("1st"));
//    //    put.addColumn(Bytes.toBytes("info"),Bytes.toBytes("age"),Bytes.toBytes("28"));
//    //    put.addColumn(Bytes.toBytes("address"),Bytes.toBytes("country"),Bytes.toBytes("China"));
//    //    table.put(put);
//    //批量
//    List<Put> putList = new ArrayList<>();
//    Put put1 = new Put(Bytes.toBytes("2st"));
//    put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("18"));
//    put1.addColumn(Bytes.toBytes("address"), Bytes.toBytes("country"), Bytes.toBytes("China"));
//    putList.add(put1);
//
//    Put put2 = new Put(Bytes.toBytes("3st"));
//    put2.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("38"));
//    put2.addColumn(Bytes.toBytes("address"), Bytes.toBytes("country"), Bytes.toBytes("China"));
//    putList.add(put2);
//
//    table.put(putList);
//  }
//
//  @Test public void updateDatas() throws IOException {
//    table = con.getTable(TableName.valueOf(tableName));
//    Put put1 = new Put(Bytes.toBytes("2st"));
//    put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("30"));
//    table.put(put1);
//  }
//
//  @Test public void findDatas() throws IOException {
//    table = con.getTable(TableName.valueOf(tableName));
//    Get get = new Get(Bytes.toBytes("3st"));
//    Result result = table.get(get);
//    List<Cell> columnCells = result.getColumnCells(Bytes.toBytes("info"), Bytes.toBytes("age"));
//    Cell cell = columnCells.get(0);
//    System.out.println(
//      Bytes.toString(result.getRow()) + "\t" + Bytes.toString(CellUtil.cloneFamily(cell)) + "\t"
//        + Bytes.toString(CellUtil.cloneQualifier(cell)) + "\t" + Bytes.toString(CellUtil.cloneValue(cell)));
//  }
//
//  @Test public void findAll() throws IOException {
//    table = con.getTable(TableName.valueOf(tableName));
//    //全表
//    Scan scan = new Scan();
//    //指定【【起始】】rowkey
//    //    Scan scan=new Scan(Bytes.toBytes("3st"));
//    //指定rowkey
//    //    Scan scan=new Scan(new Get(Bytes.toBytes("1st")));
//    //指定起止rowkey（左闭右开）
//    //    Scan scan=new Scan(Bytes.toBytes("1st"),Bytes.toBytes("2st"));
//    //指定列
//    scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"));
//    ResultScanner results = table.getScanner(scan);
//    //全表列检索
//    //    ResultScanner results = table.getScanner(Bytes.toBytes("info"), Bytes.toBytes("age"));
//
//    for (Result result : results) {
//      Cell[] cells = result.rawCells();
//      for (Cell cell : cells) {
//        System.out.println(
//          Bytes.toString(result.getRow()) + "\t" + Bytes.toString(CellUtil.cloneFamily(cell)) + "\t"
//            + Bytes.toString(CellUtil.cloneQualifier(cell)) + "\t" + Bytes.toString(CellUtil.cloneValue(cell)));
//      }
//    }
//  }
//
//  @Test public void findAllByFilter() throws IOException {
//    table = con.getTable(TableName.valueOf(tableName));
//    //全表
//    Scan scan = new Scan();
//    //正则匹配rowkey
////    String regex = "^*st";
////    Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator(regex));
//    //匹配rowkey前缀
////    Filter filter=new PrefixFilter(Bytes.toBytes("1"));
////    scan.setFilter(filter);
//    //多条件匹配rowkey
//    String regex = "^*st";
//    Filter filter1 = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator(regex));
//    Filter filter2=new PrefixFilter(Bytes.toBytes("1"));
//    FilterList filterList =new FilterList();
//    filterList.addFilter(filter1);
//    filterList.addFilter(filter2);
//    scan.setFilter(filterList);
//    ResultScanner results = table.getScanner(scan);
//    //全表列检索
//    //    ResultScanner results = table.getScanner(Bytes.toBytes("info"), Bytes.toBytes("age"));
//
//    for (Result result : results) {
//      Cell[] cells = result.rawCells();
//      for (Cell cell : cells) {
//        System.out.println(
//          Bytes.toString(result.getRow()) + "\t" + Bytes.toString(CellUtil.cloneFamily(cell)) + "\t"
//            + Bytes.toString(CellUtil.cloneQualifier(cell)) + "\t" + Bytes.toString(CellUtil.cloneValue(cell)));
//      }
//    }
//  }
}
